package br.com.oficicar.apresentacao;

import java.util.List;

import javax.inject.Named;

import org.hibernate.Hibernate;
import org.primefaces.event.FlowEvent;
import org.primefaces.event.SelectEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.com.oficicar.entidades.Cliente;
import br.com.oficicar.entidades.Logradouro;
import br.com.oficicar.integracao.ClienteDAO;
import br.com.oficicar.integracao.EnderecoDAO;

@Named
@Component
@Scope("session")
public class ClienteHome extends GenericHome<Cliente, ClienteDAO> {
	
	private EnderecoDAO enderecoDAO;

	@Override
	public void limparTela() {
		setEntidade(new Cliente());
		getEntidade().setEndereco(Logradouro.inicializar());
	}
	

	@Override
	public void checaRestricoes() {
		// TODO Auto-generated method stub

	}

	public String onFlowProcess(FlowEvent event) {
		return event.getNewStep();
	}

	@Override
	@Autowired
	public void setDaoPrincipal(ClienteDAO daoPrincipal) {
		this.daoPrincipal = daoPrincipal;
	}

	@Override
	//@Transactional(readOnly=true)
	public void selecionar(SelectEvent ev) {
		Cliente c = getDaoPrincipal().obter(getEntidade().getId());
		Hibernate.initialize(c.getEndereco());
		
		setEntidade(c);
		super.selecionar(ev);
	}
	
	
	
	//@Transactional(readOnly=true)
	public List<String> filtrarCidade(String query){
		return this.enderecoDAO.autoFiltro(query, "cidade");
	}
	
	//@Transactional(readOnly=true)
	public List<String> filtrarUF(String query){
		return this.enderecoDAO.autoFiltro(query, "UF");
	}
	
	//@Transactional(readOnly=true)
	public List<String> filtrarBairro(String query){
		return this.enderecoDAO.autoFiltro(query, "bairro");
	}

	@Autowired
	public void setEnderecoDAO(EnderecoDAO enderecoDAO) {
		this.enderecoDAO = enderecoDAO;
	}


	@Override
	public void inserir() {
		getEntidade().getEndereco().setCEP(getEntidade().getEndereco().getCEP().replaceAll("-", ""));
		getEntidade().setCpf(getEntidade().getCpf().replaceAll("-", "").replaceAll(".", ""));
		super.inserir();
	}
	
	
}
